package com.davidokun.view;

import java.util.Timer;
import java.util.TimerTask;

import com.davidokun.model.GeneraNumeros;
import com.davidokun.model.Verbos;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class Juego extends Activity{
	
	private TextView lblTimer;
	private int countTime, countTime2;
	private int[] position;
	private int puntos;
	private EditText txtPresente_1, txtPasado_1, txtParticipio_1;
	private EditText txtPresente_2, txtPasado_2, txtParticipio_2;
	private EditText txtPresente_3, txtPasado_3, txtParticipio_3;
	private EditText txtPresente_4, txtPasado_4, txtParticipio_4;
	private EditText txtPresente_5, txtPasado_5, txtParticipio_5;
	private EditText txtPresente_6, txtPasado_6, txtParticipio_6;
	private Verbos verb;
	private Timer gameTimer;
	private Handler manejador;
	private Runnable cronometro, calificacion;
	private GeneraNumeros numbers;
	private MediaPlayer gameSong;
	private Button finish;
	
	
	/* Constructor */
	public Juego(){
		
	}
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.juego);
		
		setSong();
		initComponents();
		
		Bundle getTime = getIntent().getExtras();
		countTime = getTime.getInt("timer");
		countTime2 = countTime;
		
		setVisibility(countTime);
		
		asignaVerbos();
		
		gameTimer = new Timer();
		
		gameTimer.scheduleAtFixedRate(new TimerTask() {
			
			@Override
			public void run() {
				
				manejador.post(cronometro);
				
				if(countTime == 0){
					
					gameSong.release();
					manejador.post(calificacion);
				}
				if(countTime == -5){
					goNext();
					this.cancel();
				}	
				
			}
		},0,1000);
		
		

		

	}
	
	/**
	 * Inicializa los componentes del Activity.
	 */
	public void initComponents(){

		/* Linea 1 */
		txtPresente_1 = (EditText) findViewById(R.id.txtPresente_1);
		txtPresente_1.setTextColor(Color.rgb(63, 30, 247));
		txtPasado_1 = (EditText) findViewById(R.id.txtPasado_1);
		txtParticipio_1 = (EditText) findViewById(R.id.txtParticipio_1);
		
		/* Linea 2 */
		txtPresente_2 = (EditText) findViewById(R.id.txtPresente_2);
		txtPresente_2.setTextColor(Color.rgb(63, 30, 247));
		txtPasado_2 = (EditText) findViewById(R.id.txtPasado_2);
		txtParticipio_2 = (EditText) findViewById(R.id.txtParticipio_2);
		
		/* Linea 3 */
		txtPresente_3 = (EditText) findViewById(R.id.txtPresente_3);
		txtPresente_3.setTextColor(Color.rgb(63, 30, 247));
		txtPasado_3 = (EditText) findViewById(R.id.txtPasado_3);
		txtParticipio_3 = (EditText) findViewById(R.id.txtParticipio_3);
		
		/* Linea 4 */
		txtPresente_4 = (EditText) findViewById(R.id.txtPresente_4);
		txtPresente_4.setTextColor(Color.rgb(63, 30, 247));
		txtPasado_4 = (EditText) findViewById(R.id.txtPasado_4);
		txtParticipio_4 = (EditText) findViewById(R.id.txtParticipio_4);
		
		/* Linea 5 */
		txtPresente_5 = (EditText) findViewById(R.id.txtPresente_5);
		txtPresente_5.setTextColor(Color.rgb(63, 30, 247));
		txtPasado_5 = (EditText) findViewById(R.id.txtPasado_5);
		txtParticipio_5 = (EditText) findViewById(R.id.txtParticipio_5);
		
		/* Linea 5 */
		txtPresente_6 = (EditText) findViewById(R.id.txtPresente_6);
		txtPresente_6.setTextColor(Color.rgb(63, 30, 247));
		txtPasado_6 = (EditText) findViewById(R.id.txtPasado_6);
		txtParticipio_6 = (EditText) findViewById(R.id.txtParticipio_6);
		
		finish = (Button) findViewById(R.id.btnFinish);
		
		finish.setOnClickListener(new View.OnClickListener() {
			
			public void onClick(View v) {
				
				countTime = -1;
				gameSong.release();
				manejador.post(calificacion);
				
			}
		});
		
		/* Objeto con los String de los Verbos */
		verb = new Verbos();
		
		/* TextView para contabilizar el tiempo */
		lblTimer = (TextView) findViewById(R.id.lblTimer);
		
		/* Handler para realizar proceso en otro Thread */
		manejador = new Handler();
		
		/* Runnable que ejecuta la actualizacion del TextView Tiempo
		 * en el metodo contadorTiempo().
		 */
		cronometro = new Runnable() {
			
			public void run() {
				
				contadorTiempo();
			}
		};
		
		calificacion = new Runnable() {
			
			public void run() {
				
				puntaje();
			}
		};
		
		numbers = new GeneraNumeros();

	}
	
	/**
	 * Contabiliza el tiempo restante de Juego.
	 */
	public void contadorTiempo(){
		
		if(countTime > -7){
			countTime--;
			if(countTime > -1){
				lblTimer.setText("Tiempo : " + countTime);
			}
		}

	}
	
	public void goNext(){
		
		/* Se crea un Bundle */					
		Bundle sendPuntaje = new Bundle();
		Bundle sendDificulty = new Bundle();
		
		/* Se le agrega al Bundle el parametro que se quiere enviar */
		sendPuntaje.putInt("puntaje", puntos);
		sendDificulty.putInt("timer", countTime2);
		
		/* Se crea un Intent con el Contexto de MainActivity y la clase que se quiere iniciar*/
		final Intent puntajeGanado = new Intent(Juego.this, Puntaje.class);
		
		/* Al intent se le agregan los parametros que tiene el Bundle */
		puntajeGanado.putExtras(sendPuntaje);
		puntajeGanado.putExtras(sendDificulty);
		
		/* Se inicia el Activity */
		startActivity(puntajeGanado);
		
	}
	
	
	/**
	 * Asigan lo verbos a cada EditText wn Presente
	 */
	public void asignaVerbos(){
		
		position = numbers.getNumbers();
		txtPresente_1.setText(verb.getVerbPresente(position[0]));
		txtPresente_2.setText(verb.getVerbPresente(position[1]));
		txtPresente_3.setText(verb.getVerbPresente(position[2]));
		txtPresente_4.setText(verb.getVerbPresente(position[3]));
		txtPresente_5.setText(verb.getVerbPresente(position[4]));
		txtPresente_6.setText(verb.getVerbPresente(position[5]));
	}
	
	/**
	 * Habilita los EditText segun la dificultad.
	 * 
	 * @param segundos duracion en segundos.
	 */
	public void setVisibility(int segundos){
		
		if(segundos == 180){
			
			txtPresente_1.setVisibility(0);
			txtPasado_1.setVisibility(0);
			txtParticipio_1.setVisibility(0);
			txtPresente_2.setVisibility(0);
			txtPasado_2.setVisibility(0);
			txtParticipio_2.setVisibility(0);

		}
		if(segundos == 120){
			
			txtPresente_1.setVisibility(0);
			txtPasado_1.setVisibility(0);
			txtParticipio_1.setVisibility(0);
			txtPresente_2.setVisibility(0);
			txtPasado_2.setVisibility(0);
			txtParticipio_2.setVisibility(0);
			
			txtPresente_3.setVisibility(0);
			txtPasado_3.setVisibility(0);
			txtParticipio_3.setVisibility(0);
			txtPresente_4.setVisibility(0);
			txtPasado_4.setVisibility(0);
			txtParticipio_4.setVisibility(0);
		}
		
		if(segundos == 60){
			
			txtPresente_1.setVisibility(0);
			txtPasado_1.setVisibility(0);
			txtParticipio_1.setVisibility(0);
			txtPresente_2.setVisibility(0);
			txtPasado_2.setVisibility(0);
			txtParticipio_2.setVisibility(0);
			
			txtPresente_3.setVisibility(0);
			txtPasado_3.setVisibility(0);
			txtParticipio_3.setVisibility(0);
			txtPresente_4.setVisibility(0);
			txtPasado_4.setVisibility(0);
			txtParticipio_4.setVisibility(0);
			
			txtPresente_5.setVisibility(0);
			txtPasado_5.setVisibility(0);
			txtParticipio_5.setVisibility(0);
			txtPresente_6.setVisibility(0);
			txtPasado_6.setVisibility(0);
			txtParticipio_6.setVisibility(0);
		}
		
	}
	
	/**
	 * Genera la calificacion
	 */
	public void puntaje(){
		
		/* Deshabilita los EditText */
		txtPasado_1.setEnabled(false);
		txtParticipio_1.setEnabled(false);
		txtPasado_2.setEnabled(false);
		txtParticipio_2.setEnabled(false);
		txtPasado_3.setEnabled(false);
		txtParticipio_3.setEnabled(false);
		txtPasado_4.setEnabled(false);
		txtParticipio_4.setEnabled(false);
		txtPasado_5.setEnabled(false);
		txtParticipio_5.setEnabled(false);
		txtPasado_6.setEnabled(false);
		txtParticipio_6.setEnabled(false);
		
		/* Primera Linea */
		if(txtPasado_1.getText().toString().equals(verb.getVerbPasado(position[0]))){
			
			txtPasado_1.setBackgroundColor(Color.GREEN);
			puntos += 1;
		}
		else{
			txtPasado_1.setBackgroundColor(Color.RED);
		}
		
		if(txtParticipio_1.getText().toString().equals(verb.getVerbParticipio(position[0]))){
			
			txtParticipio_1.setBackgroundColor(Color.GREEN);
			puntos += 1;
		}
		else{
			txtParticipio_1.setBackgroundColor(Color.RED);
		}
		
		/* Segunda Linea */
		if(txtPasado_2.getText().toString().equals(verb.getVerbPasado(position[1]))){
			
			txtPasado_2.setBackgroundColor(Color.GREEN);
			puntos += 1;
		}
		else{
			txtPasado_2.setBackgroundColor(Color.RED);
		}
		
		if(txtParticipio_2.getText().toString().equals(verb.getVerbParticipio(position[1]))){
			
			txtParticipio_2.setBackgroundColor(Color.GREEN);
			puntos += 1;
		}
		else{
			txtParticipio_2.setBackgroundColor(Color.RED);
		}
		
		/* Tercera Linea */
		if(txtPasado_3.getText().toString().equals(verb.getVerbPasado(position[2]))){
			
			txtPasado_3.setBackgroundColor(Color.GREEN);
			puntos += 1;
		}
		else{
			txtPasado_3.setBackgroundColor(Color.RED);
		}
		
		if(txtParticipio_3.getText().toString().equals(verb.getVerbParticipio(position[2]))){
			
			txtParticipio_3.setBackgroundColor(Color.GREEN);
			puntos += 1;
		}
		else{
			txtParticipio_3.setBackgroundColor(Color.RED);
		}
		
		/* Cuarta Linea */
		if(txtPasado_4.getText().toString().equals(verb.getVerbPasado(position[3]))){
			
			txtPasado_4.setBackgroundColor(Color.GREEN);
			puntos += 1;
		}
		else{
			txtPasado_4.setBackgroundColor(Color.RED);
		}
		
		if(txtParticipio_4.getText().toString().equals(verb.getVerbParticipio(position[3]))){
			
			txtParticipio_4.setBackgroundColor(Color.GREEN);
			puntos += 1;
		}
		else{
			txtParticipio_4.setBackgroundColor(Color.RED);
		}
		
		/* Quinta Linea */
		if(txtPasado_5.getText().toString().equals(verb.getVerbPasado(position[4]))){
			
			txtPasado_5.setBackgroundColor(Color.GREEN);
			puntos += 1;
		}
		else{
			txtPasado_5.setBackgroundColor(Color.RED);
		}
		
		if(txtParticipio_5.getText().toString().equals(verb.getVerbParticipio(position[4]))){
			
			txtParticipio_5.setBackgroundColor(Color.GREEN);
			puntos += 1;
		}
		else{
			txtParticipio_5.setBackgroundColor(Color.RED);
		}
		
		/* Sexta Linea */
		if(txtPasado_6.getText().toString().equals(verb.getVerbPasado(position[5]))){
			
			txtPasado_6.setBackgroundColor(Color.GREEN);
			puntos += 1;
		}
		else{
			txtPasado_6.setBackgroundColor(Color.RED);
		}
		
		if(txtParticipio_6.getText().toString().equals(verb.getVerbParticipio(position[5]))){
			
			txtParticipio_6.setBackgroundColor(Color.GREEN);
			puntos += 1;
		}
		else{
			txtParticipio_6.setBackgroundColor(Color.RED);
		}
	}

	public void setSong(){
		
		gameSong =  MediaPlayer.create(Juego.this, R.raw.game);
		gameSong.start();
	}
	 /**
     * Cuando el Activity pierde el foco del usuario.
     */
	@Override
	protected void onPause() {
		
		super.onPause();
		
		finish();
	}
	


	
	
	
			

}
